/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.gob.fonafe.action;

import com.opensymphony.xwork2.ActionSupport;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.apache.struts2.interceptor.RequestAware;
import org.springframework.beans.factory.annotation.Autowired;
import pe.gob.fonafe.domain.BannerBean;
import pe.gob.fonafe.service.BannerService;

/**
 *
 * @author czela
 */
public class MostrarBannerAction extends ActionSupport implements RequestAware{

    private BannerBean banner;
    private Date inicio;
    private Date fin;
    private String mensajeOK;
    private String mensajeFail;
    private Map<String,Object> request;

    @Autowired
    private BannerService bannerService;

    public void setRequest(Map<String, Object> request) {
        this.request = request;
    }

    @Override
    public String execute() throws Exception {
        List<BannerBean> listBanner = new ArrayList<BannerBean>();
        String resultado ="";
        try{
            listBanner = bannerService.obtenerBanner();
            if (periodoValidez(listBanner.get(0))){
                banner = listBanner.get(0);
            }
            resultado = SUCCESS;
        }catch(Exception ex){
            ex.printStackTrace();
            resultado = ERROR;
        }
        return resultado;
    }

    private boolean periodoValidez(BannerBean bean){
        boolean flag;
        Timestamp fechaActual = new Timestamp(new Date().getTime());
        try{
            flag = fechaActual.compareTo(bean.getInicio()) >= 0 && fechaActual.compareTo(bean.getPeriodo()) <=0;
            System.out.println("Valor Flag [" + flag + "]");
        }catch(Exception ex){
            System.out.println("periodoValidez error:" + ex.getMessage().toString());
            flag = false;
        }
        return flag;
    }

    public String actualizarBanner(){
        String resultado="";
        try{
            String[] result = new String[2];
            banner.setInicio(inicio);
            banner.setPeriodo(fin);
            result = bannerService.actualizarBanner(banner);
            System.out.println("Ver Result[0]: " + result[0]);
            System.out.println("Ver Result[1]: " + result[1]);
            if(result[0].equals("1")){
                mensajeOK = result[1];
                resultado = SUCCESS;
            }else{
                mensajeFail ="Ocurrio un error, vuelva a intentarlo en unos minutos <br/>" + result[1];
                resultado = "noValido";
            }
        }catch(Exception ex){
            ex.printStackTrace();
            resultado = ERROR;
        }
        return resultado;
    }

    //getters y setters
    public BannerBean getBanner() {
        return banner;
    }

    public void setBanner(BannerBean banner) {
        this.banner = banner;
    }

    public Date getFin() {
        return fin;
    }

    public void setFin(Date fin) {
        this.fin = fin;
    }

    public Date getInicio() {
        return inicio;
    }

    public void setInicio(Date inicio) {
        this.inicio = inicio;
    }

    public String getMensajeFail() {
        return mensajeFail;
    }

    public void setMensajeFail(String mensajeFail) {
        this.mensajeFail = mensajeFail;
    }

    public String getMensajeOK() {
        return mensajeOK;
    }

    public void setMensajeOK(String mensajeOK) {
        this.mensajeOK = mensajeOK;
    }
    
    
}
